触发工作流的事件 您所在的位置:网站首页 GitHub Actions 的工作流语法 触发工作流的事件

触发工作流的事件

2024-05-18 15:25| 来源: 网络整理| 查看: 265

关于触发工作流程的事件

工作流程触发器是导致工作流程运行的事件。 有关如何使用工作流触发器的详细信息,请参阅“触发工作流程”。

某些事件具有多种活动类型。 对于这些事件,你可以指定将触发工作流程运行的活动类型。 有关每个活动类型的含义的详细信息,请参阅“Webhook 事件和有效负载”。

注意:并非所有 Webhook 事件都触发工作流。

branch_protection_rule Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFbranch_protection_rule- created- edited- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在工作流程存储库中的分支保护规则发生更改时运行工作流程。 有关分支保护规则的详细信息,请参阅“关于受保护分支”。 有关分支保护规则 API 的信息,请参阅 GraphQL API 文档中的“对象”或“分支的 REST API 终结点及其设置”。

例如,可以在分支保护规则状态为 created 或 deleted 时运行工作流:

on: branch_protection_rule: types: [created, deleted] check_run Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFcheck_run- created- rerequested- completed- requested_action默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在发生与检查运行相关的活动时运行工作流程。 检查运行是检查套件中的单个测试。 如需相关信息,请参阅“使用 REST API 与检查交互”。 有关检查运行 API 的信息,请参阅 GraphQL API 文档中的“对象”或“检查运行的 REST API 终结点”。

例如,可以在检查运行状态为 rerequested 或 completed 时运行工作流。

on: check_run: types: [rerequested, completed] check_suite Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFcheck_suite- completed默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 尽管仅支持 completed 活动类型,但如果将来添加更多活动类型,则指定活动类型将确保工作流保持特定。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意:为防止递归工作流,如果检查套件是由 GitHub Actions 创建,则此事件不会触发工作流。

在发生检查套件活动时运行工作流程。 检查套件是为特定提交创建的检查运行的集合。 检查套件汇总了套件中检查运行的状态和结论。 如需相关信息,请参阅“使用 REST API 与检查交互”。 有关检查套件 API 的信息,请参阅 GraphQL API 文档中的“对象”或“检查套件的 REST API 终结点”。

例如,可以在检查运行状态为 completed 时运行工作流。

on: check_suite: types: [completed] create Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFcreate不适用创建的分支或标记上的最新提交创建的分支或标记

注意:一次创建三个以上的标记时,不会创建事件。

当有人在工作流程的存储库中创建 Git 引用(Git 分支或标记)时运行工作流程。 有关用于创建 Git 引用的 API 的信息,请参阅 GraphQL API 文档中的“突变”或“Git 参考的 REST API 终结点”。

例如,可以在发生 create 事件时运行工作流。

on: create delete Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFdelete不适用默认分支上的最新提交默认分支

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意:一次删除三个以上的标记时,不会创建事件。

当有人删除工作流程存储库中的 Git 引用(Git 分支或标记)时运行工作流程。 有关用于删除 Git 引用的 API 的信息,请参阅 GraphQL API 文档中的“突变”或“Git 参考的 REST API 终结点”。

例如,可以在发生 delete 事件时运行工作流。

on: delete deployment Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFdeployment不适用要部署的提交要部署的分支或标记(如果使用提交 SHA 创建,则为空)

当有人在工作流程的存储库中创建部署时运行工作流程。 使用提交 SHA 创建的部署可能没有 Git 引用。有关用于创建部署的 API 的信息,请参阅 GraphQL API 文档中的“突变”或“存储库的 REST API 终结点”。

例如,可以在发生 deployment 事件时运行工作流。

on: deployment deployment_status Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFdeployment_status不适用要部署的提交要部署的分支或标记(提交时为空)

注意:将部署状态设置为 inactive 时,不会触发工作流运行。

在第三方提供部署状态时运行工作流程。 使用提交 SHA 创建的部署可能没有 Git 引用。有关用于创建部署状态的 API 的信息,请参阅 GraphQL API 文档中的“突变”或“适用于部署的 REST API 终结点”。

例如,可以在发生 deployment_status 事件时运行工作流。

on: deployment_status discussion Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFdiscussion- created- edited- deleted- transferred- pinned- unpinned- labeled- unlabeled- locked- unlocked- category_changed - answered - unanswered默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意: GitHub Discussions 的 Webhook 事件目前为 beta 版本,可能会有变动。

在创建或修改工作流程存储库中的讨论时运行工作流程。 对于与讨论评论相关的活动,请使用 discussion_comment 事件。 有关讨论的详细信息,请参阅“关于讨论”。 有关 GraphQL API 的信息,请参阅“对象”。

例如,可以在讨论状态为 created、edited 或 answered 时运行工作流。

on: discussion: types: [created, edited, answered] discussion_comment Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFdiscussion_comment- created- edited- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意: GitHub Discussions 的 Webhook 事件目前为 beta 版本,可能会有变动。

在创建或修改工作流程存储库中讨论的评论时运行工作流程。 对于与讨论(而非讨论的评论)相关的活动,请使用 discussion 事件。 有关讨论的详细信息,请参阅“关于讨论”。 有关 GraphQL API 的信息,请参阅“对象”。

例如,可以在讨论评论的状态为 created 或 deleted 时运行工作流。

on: discussion_comment: types: [created, deleted] fork Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFfork不适用默认分支上的最新提交默认分支

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

当有人复刻存储库时运行工作流程。 有关 REST API 的信息,请参阅“分支的 REST API 终结点”。

例如,可以在发生 fork 事件时运行工作流。

on: fork gollum Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFgollum不适用默认分支上的最新提交默认分支

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在有人创建或更新 Wiki 页面时运行工作流程。 有关详细信息,请参阅“关于 wikis”。

例如,可以在发生 gollum 事件时运行工作流。

on: gollum issue_comment Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFissue_comment- created- edited- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在创建、编辑或删除议题或拉取请求评论时运行工作流程。 有关问题注释 API 的信息,请参阅 GraphQL API 文档中的“对象”或 REST API 文档中的“Webhook 事件和有效负载”。

例如,可以在问题或拉取请求注释的状态为 created 或 deleted 时运行工作流。

on: issue_comment: types: [created, deleted] 仅问题或仅拉取请求的 issue_comment

对于问题和拉取请求的注释,都会发生 issue_comment 事件。 可以在条件中使用 github.event.issue.pull_request 属性,根据触发对象是问题还是拉取请求来执行不同的操作。

例如,仅当 issue_comment 事件源自拉取请求时,此工作流才会运行 pr_commented 作业。 仅当 issue_comment 事件源自问题时,才会运行 issue_commented 作业。

on: issue_comment jobs: pr_commented: # This job only runs for pull request comments name: PR comment if: ${{ github.event.issue.pull_request }} runs-on: ubuntu-latest steps: - run: | echo A comment on PR $NUMBER env: NUMBER: ${{ github.event.issue.number }} issue_commented: # This job only runs for issue comments name: Issue comment if: ${{ !github.event.issue.pull_request }} runs-on: ubuntu-latest steps: - run: | echo A comment on issue $NUMBER env: NUMBER: ${{ github.event.issue.number }} issues Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFissues- opened- edited- deleted- transferred- pinned- unpinned- closed- reopened- assigned- unassigned- labeled- unlabeled- locked- unlocked- milestoned - demilestoned默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在创建或修改工作流程存储库中的议题时运行工作流程。 对于与问题中的注释相关的活动,请使用 issue_comment 事件。 有关问题的详细信息,请参阅“关于议题”。 有关问题 API 的信息,请参阅 GraphQL API 文档中的“对象”或“适用于问题的 REST API 终结点”。

例如,可以在问题状态为 opened、edited 或 milestoned 时运行工作流。

on: issues: types: [opened, edited, milestoned] label Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFlabel- created- edited- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在创建或修改工作流程存储库中的标签时运行工作流程。 有关标签的详细信息,请参阅“管理标签”。 有关标签 API 的信息,请参阅 GraphQL API 文档中的“对象”或“适用于标签的 REST API 终结点”。

如果要在问题、拉取请求或讨论中添加或删除标签时运行工作流,请针对 issues、pull_request、pull_request_target 或 discussion 事件改用 labeled 或 unlabeled 活动类型。

例如,可以在标签状态为 created 或 deleted 时运行工作流。

on: label: types: [created, deleted] merge_group Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFmerge_groupchecks_requested合并组的 SHA合并组的引用

注意:

多个活动类型会触发此事件。 尽管仅支持 checks_requested 活动类型,但如果将来添加更多活动类型,则指定活动类型将使工作流保持特定。 有关每种活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。 如果存储库使用 GitHub Actions 执行所需检查 要求工作流,则需要更新工作流以包含 merge_group 事件作为其他触发器。 否则在将拉取请求添加到合并队列时不会触发状态检查。 合并将失败,因为没有报告必要的状态检查。 事件 merge_group 独立于 pull_request 和 push 事件。

将拉取请求添加到合并队列时运行工作流,将拉取请求添加到合并组。 有关详细信息,请参阅“将拉取请求与合并队列合并”。

例如,可以在发生 checks_requested 活动时运行工作流。

on: pull_request: branches: [ "main" ] merge_group: types: [checks_requested] milestone Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFmilestone- created- closed- opened- edited- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在创建或修改工作流程存储库中的里程碑时运行工作流程。 有关里程碑的详细信息,请参阅“关于里程碑”。 有关检查里程碑 API 的信息,请参阅 GraphQL API 文档中的“对象”或“适用于里程碑的 REST API 终结点”。

若想要在将问题添加到里程碑或从里程碑中删除问题时运行工作流,请针对 issues 事件改用 milestoned 或 demilestoned 活动类型。

例如,可以在里程碑状态为 opened 或 deleted 时运行工作流。

on: milestone: types: [opened, deleted] page_build Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFpage_build不适用默认分支上的最新提交不适用

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

当有人推送到作为 GitHub Pages 的发布源的分支时,如果为存储库启用了 GitHub Pages ,则运行工作流程。 有关 GitHub Pages 发布源的详细信息,请参阅“配置 GitHub Pages 站点的发布源”。 有关 REST API 的信息,请参阅“存储库的 REST API 终结点”。

例如,可以在发生 page_build 事件时运行工作流。

on: page_build project Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFproject- created- closed- reopened- edited- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 edited 活动类型是指编辑 项目(经典)(而不是 项目(经典) 上的列或卡片)。 有关每种活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意:此事件仅对工作流存储库拥有的项目发生,对于组织拥有或用户拥有的项目,或者对于其他存储库拥有的项目,不会发生此事件。

注意:此事件仅适用于 projects (classic)。

在创建或修改 项目(经典) 时运行工作流程。 对于与 项目(经典) 中的卡片或列相关的活动,请改用 project_card 或 project_column 事件。 有关 项目(经典) 的详细信息,请参阅“关于 projects (classic)”。 有关 项目(经典) API 的信息,请参阅 GraphQL API 文档中的“对象”或“Projects (classic) 的 REST API 终结点”。

例如,可以在项目状态为 created 或 deleted 时运行工作流。

on: project: types: [created, deleted] project_card Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFproject_card- created- moved- converted 到问题- edited- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意:此事件仅对工作流存储库拥有的项目发生,对于组织拥有或用户拥有的项目,或者对于其他存储库拥有的项目,不会发生此事件。

注意:此事件仅适用于 projects (classic)。

在创建或修改 项目(经典) 上的卡片时运行工作流程。 对于与 项目(经典) 中的 项目(经典) 或列相关的活动,请改用 project 或 project_column 事件。 有关 项目(经典) 的详细信息,请参阅“关于 projects (classic)”。 有关项目卡 API 的信息,请参阅 GraphQL API 文档中的“对象”或“Project (classic) 卡的 REST API 终结点”。

例如,可以在项目卡片的状态为 created 或 deleted 时运行工作流。

on: project_card: types: [created, deleted] project_column Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFproject_column- created- updated- moved- deleted默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意:此事件仅对工作流存储库拥有的项目发生,对于组织拥有或用户拥有的项目,或者对于其他存储库拥有的项目,不会发生此事件。

注意:此事件仅适用于 projects (classic)。

在创建或修改 项目(经典) 上的列时运行工作流程。 对于与 项目(经典) 中的 项目(经典) 或卡片相关的活动,请改用 project 或 project_card 事件。 有关 项目(经典) 的详细信息,请参阅“关于 projects (classic)”。 有关项目列 API 的信息,请参阅 GraphQL API 文档中的“对象”或“Projects (classic) 的 REST API 终结点”。

例如,可以在项目列的状态为 created 或 deleted 时运行工作流。

on: project_column: types: [created, deleted] public Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFpublic不适用默认分支上的最新提交默认分支

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

当工作流程的存储库从私有变为公共时运行工作流程。 有关 REST API 的信息,请参阅“存储库的 REST API 终结点”。

例如,可以在发生 public 事件时运行工作流。

on: public pull_request Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFpull_request- assigned- unassigned- labeled- unlabeled- opened- edited- closed- reopened- synchronize- converted_to_draft- locked- unlocked- enqueued- dequeued- milestoned- demilestoned- ready_for_review- review_requested- review_request_removed- auto_merge_enabled- auto_merge_disabledGITHUB_REF 分支上的最后一次合并提交PR 合并分支 refs/pull/PULL_REQUEST_NUMBER/merge

注意:

多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅 "Webhook 事件和有效负载"。 默认情况下,工作流仅在 pull_request 事件的活动类型为 opened、synchronize 或 reopened 时运行。 要按不同的活动类型触发工作流,请使用 types 关键字。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

如果拉取请求存在合并冲突,工作流将不会在 pull_request 活动上运行。 必须先解决合并冲突。

相反,具有 pull_request_target 事件的工作流将运行,即使拉取请求存在合并冲突也是如此。 在使用 pull_request_target 触发器之前,应注意安全风险。 有关详细信息,请参阅 pull_request_target。

对于合并的拉取请求和来自分支存储库的拉取请求,pull_request Webhook 事件负载为空。

已关闭的拉取请求的 GITHUB_REF 值会根据该拉取请求是否已被合并而有所不同。 如果拉取请求已关闭但未合并,则值为 refs/pull/PULL_REQUEST_NUMBER/merge。 如果拉取请求因被合并而关闭,则它将是合并到的分支的完全限定 ref,例如 /refs/heads/main。

在工作流程存储库中发生有关拉取请求的活动时运行工作流程。 例如,如果未指定任何活动类型,则工作流程将在打开或重新打开拉取请求时运行,或者在更新拉取请求的头部分支时运行。 对于与拉取请求审查、拉取请求审查注释或拉取请求注释相关的活动,请改用 pull_request_review、pull_request_review_comment 或 issue_comment 事件。 有关拉取请求 API 的信息,请参阅 GraphQL API 文档中的“对象”或“用于拉取请求的 REST API 终结点”。

请注意,此事件的 GITHUB_SHA 是拉取请求合并分支的最后一个合并提交。 如果要获取最后一次提交到拉取请求的头部分支的提交 ID,请改用 github.event.pull_request.head.sha。

例如,你可以在打开或重新打开拉取请求时运行工作流程。

on: pull_request: types: [opened, reopened]

你可以使用事件上下文进一步控制工作流程中作业的运行时间。 例如,当请求对拉取请求进行审查时,将运行此工作流,但 specific_review_requested 作业仅在请求 octo-team 审查时运行。

on: pull_request: types: [review_requested] jobs: specific_review_requested: runs-on: ubuntu-latest if: ${{ github.event.requested_team.name == 'octo-team'}} steps: - run: echo 'A review from octo-team was requested' 基于拉取请求的主要分支或基础分支运行 pull_request 工作流

可以使用 branches 或 branches-ignore 筛选器配置工作流,使其仅在面向特定分支的拉取请求上运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

例如,当有人打开面向名称以 releases/ 开头的分支的拉取请求时,此工作流将运行:

on: pull_request: types: - opened branches: - 'releases/**'

注意:如果同时使用 branches 筛选器和 paths 筛选器,则工作流将只在这两个筛选器都满足条件时运行。 例如,仅当在名称以 releases/ 开头的分支上打开包含 JavaScript (.js) 文件更改的拉取请求时,才会运行以下工作流:

on: pull_request: types: - opened branches: - 'releases/**' paths: - '**.js'

要基于拉取请求的头部分支名称(而不是拉取请求的基本分支名称)运行作业,请在条件中使用 github.head_ref 上下文。 例如,每当打开拉取请求时,此工作流都会运行,但仅当拉取请求的头部是名称以 releases/ 开头的分支时,才会执行 run_if 作业:

on: pull_request: types: - opened jobs: run_if: if: startsWith(github.head_ref, 'releases/') runs-on: ubuntu-latest steps: - run: echo "The head of this PR starts with 'releases/'" 基于拉取请求中更改的文件运行 pull_request 工作流

你还可以将工作流程配置为在拉取请求更改特定文件时运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

例如,当拉取请求包含对 JavaScript 文件 (.js) 的更改时,此工作流将运行:

on: pull_request: paths: - '**.js'

注意:如果同时使用 branches 筛选器和 paths 筛选器,则工作流将只在这两个筛选器都满足条件时运行。 例如,仅当在名称以 releases/ 开头的分支上打开包含 JavaScript (.js) 文件更改的拉取请求时,才会运行以下工作流:

on: pull_request: types: - opened branches: - 'releases/**' paths: - '**.js' 在拉取请求合并时运行 pull_request 工作流

当拉取请求合并时,拉取请求将自动关闭。 要在拉取请求合并时运行工作流,请使用 pull_request closed 事件类型以及检查事件 merged 值的条件。 例如,每当拉取请求关闭时,将运行以下工作流程。 仅当拉取请求也合并时,if_merged 作业才会运行。

on: pull_request: types: - closed jobs: if_merged: if: github.event.pull_requesrged == true runs-on: ubuntu-latest steps: - run: | echo The PR was merged 存储库分支中的工作流

默认情况下,工作流不在存储库分支中运行。 必须在存储库分支的“操作”选项卡中启用 GitHub Actions。

除 GITHUB_TOKEN 外,当从分支存储库触发工作流时,机密不会传递给运行器。 GITHUB_TOKEN 在存储库分支的拉取请求中具有只读权限。 有关详细信息,请参阅“自动令牌身份验证”。

复刻的仓库的拉取请求事件

对于从存储库分支到基础存储库的拉取请求,GitHub 会将 pull_request、issue_comment、pull_request_review_comment、pull_request_review 和 pull_request_target 事件发送到基础存储库。 存储库分支上不会发生拉取请求事件。

当参与者第一次向公共存储库提交拉取请求时,拥有写入权限的维护者可能需要审核拉取请求上运行的工作流。 有关详细信息,请参阅“批准复刻中的工作流程运行”。

对于从分支存储库到专用存储库的拉取请求,工作流仅在启用时运行,请参阅“管理存储库的 GitHub Actions 设置”。

注意:Dependabot 拉取请求触发的工作流被视为来自存储库分支,也受到这些限制。

pull_request_comment(使用 issue_comment)

要在创建、编辑或删除对拉取请求(而不是拉取请求的差异)的注释时运行工作流,请使用 issue_comment 事件。 对于与拉取请求审查或拉取请求审查注释相关的活动,请使用 pull_request_review 或 pull_request_review_comment 事件。

pull_request_review Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFpull_request_review- submitted- edited- dismissedGITHUB_REF 分支上的最后一次合并提交PR 合并分支 refs/pull/PULL_REQUEST_NUMBER/merge

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

在提交、编辑或关闭拉取请求审阅时运行工作流程。 拉取请求审查是除正文评论和状态之外的一组拉取请求审查评论。 对于与拉取请求审查注释或拉取请求注释相关的活动,请改用 pull_request_review_comment 或 issue_comment 事件。 有关拉取请求审查 API 的信息,请参阅 GraphQL API 文档中的“对象”或“用于拉取请求的 REST API 终结点”。

例如,可以在拉取请求审查的状态为 edited 或 dismissed 时运行工作流。

on: pull_request_review: types: [edited, dismissed] 在批准拉取请求时运行工作流程

若要在拉取请求获得批准后运行工作流,可以使用 submitted 类型的 pull_request_review 事件触发工作流,然后使用 github.event.review.state 属性检查审查状态。 例如,每当提交拉取请求审查时,此工作流都将运行,但仅当提交的审查是批准审查时,approved 作业才会运行:

on: pull_request_review: types: [submitted] jobs: approved: if: github.event.review.state == 'APPROVED' runs-on: ubuntu-latest steps: - run: echo "This PR was approved" 存储库分支中的工作流

默认情况下,工作流不在存储库分支中运行。 必须在存储库分支的“操作”选项卡中启用 GitHub Actions。

除 GITHUB_TOKEN 外,当从分支存储库触发工作流时,机密不会传递给运行器。 GITHUB_TOKEN 在存储库分支的拉取请求中具有只读权限。 有关详细信息,请参阅“自动令牌身份验证”。

复刻的仓库的拉取请求事件

对于从存储库分支到基础存储库的拉取请求,GitHub 会将 pull_request、issue_comment、pull_request_review_comment、pull_request_review 和 pull_request_target 事件发送到基础存储库。 存储库分支上不会发生拉取请求事件。

当参与者第一次向公共存储库提交拉取请求时,拥有写入权限的维护者可能需要审核拉取请求上运行的工作流。 有关详细信息,请参阅“批准复刻中的工作流程运行”。

对于从分支存储库到专用存储库的拉取请求,工作流仅在启用时运行,请参阅“管理存储库的 GitHub Actions 设置”。

注意:Dependabot 拉取请求触发的工作流被视为来自存储库分支,也受到这些限制。

pull_request_review_comment Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFpull_request_review_comment- created- edited- deletedGITHUB_REF 分支上的最后一次合并提交PR 合并分支 refs/pull/PULL_REQUEST_NUMBER/merge

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

在修改拉取请求审查评论时运行工作流程。 拉取请求审查评论是对拉取请求差异的评论。 对于与拉取请求审查或拉取请求注释相关的活动,请改用 pull_request_review 或 issue_comment 事件。 有关拉取请求审查评论 API 的信息,请参阅 GraphQL API 文档中的“对象”或“用于拉取请求的 REST API 终结点”。

例如,可以在拉取请求审查注释的状态为 created 或 deleted 时运行工作流。

on: pull_request_review_comment: types: [created, deleted] 存储库分支中的工作流

默认情况下,工作流不在存储库分支中运行。 必须在存储库分支的“操作”选项卡中启用 GitHub Actions。

除 GITHUB_TOKEN 外,当从分支存储库触发工作流时,机密不会传递给运行器。 GITHUB_TOKEN 在存储库分支的拉取请求中具有只读权限。 有关详细信息,请参阅“自动令牌身份验证”。

复刻的仓库的拉取请求事件

对于从存储库分支到基础存储库的拉取请求,GitHub 会将 pull_request、issue_comment、pull_request_review_comment、pull_request_review 和 pull_request_target 事件发送到基础存储库。 存储库分支上不会发生拉取请求事件。

当参与者第一次向公共存储库提交拉取请求时,拥有写入权限的维护者可能需要审核拉取请求上运行的工作流。 有关详细信息,请参阅“批准复刻中的工作流程运行”。

对于从分支存储库到专用存储库的拉取请求,工作流仅在启用时运行,请参阅“管理存储库的 GitHub Actions 设置”。

注意:Dependabot 拉取请求触发的工作流被视为来自存储库分支,也受到这些限制。

pull_request_target Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFpull_request- assigned- unassigned- labeled- unlabeled- opened- edited- closed- reopened- synchronize- converted_to_draft- ready_for_review- locked- unlocked - review_requested - review_request_removed - auto_merge_enabled - auto_merge_disabledPR 基分支上的最后一次提交PR 基础分支

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,工作流仅在 pull_request_target 事件的活动类型为 opened、synchronize 或 reopened 时运行。 要按不同的活动类型触发工作流,请使用 types 关键字。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

在工作流程存储库中发生有关拉取请求的活动时运行工作流程。 例如,如果未指定任何活动类型,则工作流程将在打开或重新打开拉取请求时运行,或者在更新拉取请求的头部分支时运行。

此事件在拉取请求基础的上下文中运行,而不是像 pull_request 事件一样在合并提交上下文中运行。 这样可以防止从拉取请求的头部执行不安全的代码,以免更改你的仓库或窃取你在工作流程中使用的任何机密。 此事件允许你的工作流程对来自复刻的拉取请求执行标记或评论等操作。 如果需要从拉取请求构建或运行代码,请避免使用此事件。

为了确保存储库安全性,名称与特定模式匹配(例如类似于 SHA)的分支可能无法使用 pull_request_target 事件触发工作流。

警告:对于由 pull_request_target 事件触发的工作流,将授予 GITHUB_TOKEN 读/写存储库权限,除非指定了 permissions 密钥并且工作流可以访问机密,即使从分支触发也是如此。 虽然工作流程在拉取请求的基础上下文中运行,但你应该确保不在此事件中检出、生成或运行来自拉取请求的不受信任代码。 此外,任何缓存都与基本分支共享相同的作用域。 为帮助防止缓存中毒,如果缓存内容可能已更改,则不应保存缓存。 有关详细信息,请参阅 GitHub Security Lab 网站上的“确保 GitHub Actions 和工作流安全:阻止 pwn 请求”。

例如,可以在拉取请求的状态为 assigned、opened、synchronize 或 reopened 时运行工作流。

on: pull_request_target: types: [assigned, opened, synchronize, reopened] 基于拉取请求的主要分支或基础分支运行 pull_request_target 工作流

可以使用 branches 或 branches-ignore 筛选器配置工作流,使其仅在面向特定分支的拉取请求上运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

例如,当有人打开面向名称以 releases/ 开头的分支的拉取请求时,此工作流将运行:

on: pull_request_target: types: - opened branches: - 'releases/**'

注意:如果同时使用 branches 筛选器和 paths 筛选器,则工作流将只在这两个筛选器都满足条件时运行。 例如,仅当在名称以 releases/ 开头的分支上打开包含 JavaScript (.js) 文件更改的拉取请求时,才会运行以下工作流:

on: pull_request_target: types: - opened branches: - 'releases/**' paths: - '**.js'

要基于拉取请求的头部分支名称(而不是拉取请求的基本分支名称)运行作业,请在条件中使用 github.head_ref 上下文。 例如,每当打开拉取请求时,此工作流都会运行,但仅当拉取请求的头部是名称以 releases/ 开头的分支时,才会执行 run_if 作业:

on: pull_request_target: types: - opened jobs: run_if: if: startsWith(github.head_ref, 'releases/') runs-on: ubuntu-latest steps: - run: echo "The head of this PR starts with 'releases/'" 基于拉取请求中更改的文件运行 pull_request_target 工作流

可以使用 paths 或 paths-ignore 筛选器配置工作流,使其在拉取请求更改特定文件时运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

例如,当拉取请求包含对 JavaScript 文件 (.js) 的更改时,此工作流将运行:

on: pull_request_target: paths: - '**.js'

注意:如果同时使用 branches 筛选器和 paths 筛选器,则工作流将只在这两个筛选器都满足条件时运行。 例如,仅当在名称以 releases/ 开头的分支上打开包含 JavaScript (.js) 文件更改的拉取请求时,才会运行以下工作流:

on: pull_request_target: types: - opened branches: - 'releases/**' paths: - '**.js' 在拉取请求合并时运行 pull_request_target 工作流

当拉取请求合并时,拉取请求将自动关闭。 要在拉取请求合并时运行工作流,请使用 pull_request_target closed 事件类型以及检查事件 merged 值的条件。 例如,每当拉取请求关闭时,将运行以下工作流程。 仅当拉取请求也合并时,if_merged 作业才会运行。

on: pull_request_target: types: - closed jobs: if_merged: if: github.event.pull_requesrged == true runs-on: ubuntu-latest steps: - run: | echo The PR was merged push Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFpush不适用删除分支时,工作流运行中的 SHA(及其关联的 refs)将恢复为存储库的默认分支。更新的引用

注意:可用于 GitHub Actions 的 Webhook 有效负载不包括 commit 对象中的 added、removed 和 modified 属性。 你可以使用 API 检索完整的提交对象。 有关详细信息,请参阅 GraphQL API 文档中的“对象”或“适用于提交的 REST API 终结点”。

注意:如果一次推送超过 5000 个分支,则不会创建事件。 当一次推送三个以上的标签时,则不会为标签创建事件。

在推送提交或标记或使用模板创建存储库时运行工作流。

例如,可以在发生 push 事件时运行工作流。

on: push

注意:当 push Webhook 事件触发工作流运行时,操作 UI 的“推送者”字段会显示推送者的帐户,而不是作者或提交者的帐户。 但是,如果使用带有部署密钥的 SSH 身份验证将更改推送到存储库,则“推送者”字段将是在将部署密钥添加到存储库时验证部署密钥的存储库管理员。

仅在推送到特定分支时运行工作流程

可以使用 branches 或 branches-ignore 筛选器配置工作流,使其仅在推送特定分支时运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

例如,当有人推送到 main 或推送到以 releases/ 开头的分支时,此工作流将运行。

on: push: branches: - 'main' - 'releases/**'

注意:如果同时使用 branches 筛选器和 paths 筛选器,则工作流将只在这两个筛选器都满足条件时运行。 例如,仅在将包含 JavaScript (.js) 文件更改的推送发送到名称以 releases/ 开头的分支时,以下工作流才会运行:

on: push: branches: - 'releases/**' paths: - '**.js' 仅在发生特定标记的推送时运行工作流程

可以使用 tags 或 tags-ignore 筛选器配置工作流,使其仅在推送特定标记时运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

例如,当有人推送以 v1. 开头的标记时,此工作流将运行。

on: push: tags: - v1.** 仅当推送影响特定文件时才运行工作流程

可以使用 paths 或 paths-ignore 筛选器配置工作流,使其在推送到特定文件时运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

例如,当有人将更改推送到 JavaScript 文件 (.js) 时,此工作流将运行:

on: push: paths: - '**.js'

注意:如果同时使用 branches 筛选器和 paths 筛选器,则工作流将只在这两个筛选器都满足条件时运行。 例如,仅在将包含 JavaScript (.js) 文件更改的推送发送到名称以 releases/ 开头的分支时,以下工作流才会运行:

on: push: branches: - 'releases/**' paths: - '**.js' registry_package Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFregistry_package- published- updatedCommit of the published package已发布软件包的分支或标签

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意:推送多体系结构容器映像时,此事件在每个清单中发生一次,因此你可能会观察到工作流触发多次。 若要缓解此问题,并且仅为包含实际图像标记信息的事件运行工作流作业,请使用条件:

jobs: job_name: if: ${{ github.event.registry_package.package_version.container_metadata.tag.name != '' }}

当存储库中发生与 GitHub Packages 相关的活动时运行工作流程。 有关详细信息,请参阅“GitHub Packages 文档”。

例如,可以在新包版本状态为 published 时运行工作流。

on: registry_package: types: [published] release Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFrelease- published - unpublished - created - edited - deleted - prereleased - released标记的发行版中的最新提交版本的标记参考 refs/tags/

注意:多个活动类型会触发此事件。 有关每个活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:草稿版本的 created、edited 或 deleted 活动类型不会触发工作流。 当你通过 GitHub 浏览器 UI 创建版本时,你的版本可能会自动另存为草稿。

注意:对于从草稿版本发布的预发行版本,prereleased 类型不会触发工作流,但 published 类型会触发。 如果想要在稳定版和预发行版发布时运行工作流,请订阅 published 而不是 released 和 prereleased。

在存储库中发生发布活动时运行工作流程。 有关版本 API 的信息,请参阅 GraphQL API 文档中的“对象”或 REST API 文档中的“发布和发布资产的 REST API 终结点”。

例如,可以在版本状态为 published 时运行工作流。

on: release: types: [published] repository_dispatch Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFrepository_dispatch自定义默认分支上的最新提交默认分支

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

若想要触发 GitHub 外部发生的活动的工作流,可以使用 GitHub API 触发名为 repository_dispatch 的 Webhook 事件。 有关详细信息,请参阅“存储库的 REST API 终结点”。

发出创建 repository_dispatch 事件的请求时,必须指定 event_type 来描述活动类型。 默认情况下,所有 repository_dispatch 活动类型都会触发一个工作流运行。 可以使用 types 关键字限制工作流,使其在 repository_dispatch Webhook 有效负载中发送特定 event_type 值时运行。

on: repository_dispatch: types: [test_result]

注意:event_type 值仅限 100 个字符。

通过 client_payload 参数发送的任何数据都将在工作流的 github.event 上下文中可用。 例如,如果在创建存储库调度事件时发送此请求正文:

{ "event_type": "test_result", "client_payload": { "passed": false, "message": "Error: timeout" } }

则你可以在如下工作流程中访问有效负载:

on: repository_dispatch: types: [test_result] jobs: run_if_failure: if: ${{ !github.event.client_payload.passed }} runs-on: ubuntu-latest steps: - env: MESSAGE: ${{ github.event.client_payload.message }} run: echo $MESSAGE

注释:

client_payload 中顶级属性的最大数目为 10。 有效负载最多可包含 65,535 个字符。 schedule Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF不适用不适用默认分支上的最新提交默认分支

注意:

schedule 事件在 GitHub Actions 工作流运行期间负载过高时可能会延迟。 高负载时间包括每小时的开始时间。 如果负载足够高,可能会删除一些排队作业。 为了降低延迟的可能性,将您的工作流程安排在不同时间运行。

仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

计划的工作流将仅在默认分支上运行。

在公共仓库中,当 60 天内未发生仓库活动时,将自动禁用计划的工作流程。 有关重新启用已被禁用的工作流的信息,请参阅“禁用和启用工作流”。

从组织中删除最后一个提交到 cron 计划工作流的用户后,该计划工作流将被禁用。 如果具有存储库 write 权限的用户提交更改 cron 计划,则该计划工作流将重新激活。 请注意,在这种情况下,工作流不会通过对工作流文件的任何更改重新激活;必须更改 cron 值并提交此更改。

示例:

on: schedule: - cron: "15 4,5 * * *" # - github.event.state == 'error' || github.event.state == 'failure' steps: - env: DESCRIPTION: ${{ github.event.description }} run: | echo The status is error or failed: $DESCRIPTION watch Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFwatch- started默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 尽管仅支持 started 活动类型,但如果将来添加更多活动类型,则指定活动类型将使工作流保持特定。 有关每种活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

在工作流程的存储库加星标时运行工作流程。 有关拉取请求 API 的信息,请参阅 GraphQL API 文档中的“突变”或“标星的 REST API 端点”。

例如,可以在某人为存储库加星标时(即监视事件的 started 活动类型)运行工作流。

on: watch: types: [started] workflow_call Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF与调用方工作流程相同不适用与调用方工作流程相同与调用方工作流程相同

workflow_call 用于指示一个工作流可以由另一个工作流调用。 当使用 workflow_call 事件触发工作流时,被调用工作流中的事件负载与调用工作流中的事件负载相同。 有关详细信息,请参阅“重新使用工作流”。

以下示例仅在从另一个工作流程调用时运行工作流程:

on: workflow_call workflow_dispatch Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFworkflow_dispatch不适用GITHUB_REF 分支或标记上的最后一次提交收到调度的分支或标记

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

若要启用手动触发工作流,需要配置 workflow_dispatch 事件。 你可以使用 GitHub API、GitHub CLI或 GitHub 浏览器界面手动触发工作流程运行。 有关详细信息,请参阅“手动运行工作流程”。

on: workflow_dispatch 提供输入

你可以直接在工作流程中配置事件的自定义输入属性、默认输入值和必要输入。 触发事件时,可以提供 ref 和任何 inputs。 当工作流运行时,你可以访问 inputs 上下文中的输入值。 有关详细信息,请参阅“上下文”。

注释:

工作流还将接收 github.event.inputs 上下文中的输入。 inputs 上下文和 github.event.inputs 上下文中的信息完全相同,但 inputs 上下文将布尔值保留为布尔值,而不是将它们转换为字符串。 choice 类型解析为字符串,是单个可选选项。 inputs 的顶级属性的最大数目为 10。 inputs 的最大有效负载为 65,535 个字符。

此示例定义了名为 logLevel、tags 和 environment 的输入。 在运行工作流程时,可以将这些输入的值传递给工作流程。 然后,此工作流使用 inputs.logLevel、inputs.tags 和 inputs.environment 上下文属性将值输出到日志中。

on: workflow_dispatch: inputs: logLevel: description: 'Log level' required: true default: 'warning' type: choice options: - info - warning - debug tags: description: 'Test scenario tags' required: false type: boolean environment: description: 'Environment to run tests against' type: environment required: true jobs: log-the-inputs: runs-on: ubuntu-latest steps: - run: | echo "Log level: $LEVEL" echo "Tags: $TAGS" echo "Environment: $ENVIRONMENT" env: LEVEL: ${{ inputs.logLevel }} TAGS: ${{ inputs.tags }} ENVIRONMENT: ${{ inputs.environment }}

如果从浏览器运行此工作流程,则必须在工作流程运行之前手动输入所需输入的值。

还可以在从脚本运行工作流程时传递输入,或者使用 GitHub CLI。 例如:

gh workflow run run-tests.yml -f logLevel=warning -f tags=false -f environment=staging

有关详细信息,请参阅“手动运行工作流程”中的 GitHub CLI 信息。

workflow_run Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REFworkflow_run- completed- requested- in_progress默认分支上的最新提交默认分支

注意:多个活动类型会触发此事件。 重新运行工作流时不会出现 requested 活动类型。 有关每种活动类型的信息,请参阅“Webhook 事件和有效负载”。 默认情况下,所有活动类型都会触发在此事件上运行的工作流。 你可以使用 types 关键词将工作流运行限制为特定活动类型。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。

注意:仅当工作流文件在默认分支上时,此事件才会触发工作流运行。

注意:不能使用 workflow_run 将超过三个工作流级别链接在一起。 例如,如果尝试触发五个工作流(名为 B 至 F)在初始工作流 A 运行后依次运行(即:A → B → C → D → E → F),工作流 E 和 F 将不会运行。

此事件在请求或完成工作流程运行时发生。 它允许你基于另一个工作流程的执行或完成来执行工作流程。 由 workflow_run 事件启动的工作流能够访问机密和写入令牌,即使以前的工作流不能访问也是如此。 这在以前的工作流程有意未获权限的情况下很有用,但你需要在以后的工作流程中采取特权行动。

在此示例中,工作流程配置为在单独的“运行测试”工作流程完成后运行。

on: workflow_run: workflows: [Run Tests] types: - completed

如果为 workflow_run 事件指定多个 workflows,则只需要运行其中一个工作流。 例如,具有以下触发器的工作流程将在 "Staging" 工作流程或 "Lab" 工作流程完成时运行。

on: workflow_run: workflows: [Staging, Lab] types: - completed 基于另一个工作流程的结果运行工作流程

无论上一个工作流程的结果如何,工作流程运行都会被触发。 如果要基于触发工作流的结果运行作业或步骤,则可以使用带有 github.event.workflow_run.conclusion 属性的条件。 例如,每当名为“Build”的工作流完成时,此工作流就会运行,但 on-success 作业仅在“Build”工作流成功时才会运行,而 on-failure 作业仅在“Build”工作流失败时才会运行:

on: workflow_run: workflows: [Build] types: [completed] jobs: on-success: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - run: echo 'The triggering workflow passed' on-failure: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'failure' }} steps: - run: echo 'The triggering workflow failed' 将工作流限于基于分支的运行

可以使用 branches 或 branches-ignore 筛选器,指定触发工作流必须在哪些分支上运行才能触发工作流。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。 例如,仅当名为 Build 的工作流在名为 canary 的分支上运行时,具有以下触发器的工作流才会运行。

on: workflow_run: workflows: [Build] types: [requested] branches: [canary] 使用触发工作流程中的数据

可以访问与触发工作流的工作流对应的 workflow_run 事件负载。 例如,如果触发工作流生成工件,则使用 workflow_run 事件触发的工作流可以访问这些工件。

以下工作流程将数据作为构件上传。 (在此简化的示例中,数据是拉取请求编号。)

name: Upload data on: pull_request: jobs: upload: runs-on: ubuntu-latest steps: - name: Save PR number env: PR_NUMBER: ${{ github.event.number }} run: | mkdir -p ./pr echo $PR_NUMBER > ./pr/pr_number - uses: actions/upload-artifact@v4 with: name: pr_number path: pr/

当上述工作流程的运行完成时,它将触发以下工作流程的运行。 以下工作流使用 github.event.workflow_run 上下文和 GitHub REST API 下载由上述工作流上传的工件,解压缩下载的工件,并对其编号作为工件上传的拉取请求进行注释。

name: Use the data on: workflow_run: workflows: [Upload data] types: - completed jobs: download: runs-on: ubuntu-latest steps: - name: 'Download artifact' uses: actions/github-script@v6 with: script: | let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ owner: context.repo.owner, repo: context.repo.repo, run_id: context.payload.workflow_run.id, }); let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { return artifact.name == "pr_number" })[0]; let download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, artifact_id: matchArtifact.id, archive_format: 'zip', }); let fs = require('fs'); fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr_number.zip`, Buffer.from(download.data)); - name: 'Unzip artifact' run: unzip pr_number.zip - name: 'Comment on PR' uses: actions/github-script@v6 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | let fs = require('fs'); let issue_number = Number(fs.readFileSync('./pr_number')); await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issue_number, body: 'Thank you for the PR!' });


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有